'''
Авторские права принадлежат Алифатову Дмитрию Сергеевичу <dmitry@alifatov.ru>

Вы можете использовать данное Программное обеспечение на любом количестве компьютеров.

Не разрешается распространять Программное обеспечение, извлекать его компоненты и создавать производные работы на его основе.
'''
import npyscreen
import os
import socket
import astra
from astra import truncate_string
from astra import system_call
from astra import split_string
from astra import get_astra_version


class Form_Main_Settings(npyscreen.FormMultiPageAction):
    def create(self):
        astra_mode = "none"
        self.astra_mode_code = system_call("astra-modeswitch get")[:-1]
        if self.astra_mode_code == "0":
            astra_mode = "Орел(base)"
        elif self.astra_mode_code == "1":
            astra_mode = "Воронеж(advanced)"
        elif self.astra_mode_code == "2":
            astra_mode = "Смоленск(maximum)"

        self.add_widget_intelligent(npyscreen.FixedText, begin_entry_at=4, value=f"Режим защищенности: {astra_mode}", editable=False)
        self.add_widget_intelligent(npyscreen.FixedText, begin_entry_at=4, value=f"Версия: {get_astra_version()}", editable=False)
        self.nextrely += 1

        self.fqdn = os.uname().nodename
        self.hostname=self.fqdn.split(".")[0]
        self.domainname=self.fqdn[self.fqdn.index(self.hostname)+len(self.hostname)+1:]
        self.widget_hostname = self.add_widget_intelligent(npyscreen.TitleText,
                                                           begin_entry_at=40,
                                                           value=str(self.hostname),
                                                           name="Имя сервера:", scroll_exit=True)
        self.widget_domainname = self.add_widget_intelligent(npyscreen.TitleText,
                                                           begin_entry_at=40,
                                                           value=str(self.domainname),
                                                           name="Имя домена:", scroll_exit=True)
        self.nextrely += 1

        self.widget_astra_mode = self.add_widget_intelligent(npyscreen.TitleSelectOne,
                                                       max_height=4,
                                                       begin_entry_at=40,
                                                       value= [int(self.astra_mode_code),],
                                                       values=["Орел(base)", "Воронеж(advanced)", "Смоленск(maximum)"],
                                                       name="Сменить режим защищенности", scroll_exit=True)


    def on_ok(self):
        astra.update_hostname(self.widget_hostname.value, self.widget_domainname.value)
        #astra.update_resolv_conf(self.widget_domainname.value, self.widget_dns1.value, self.widget_dns2.value)
        astra.update_hosts(self.widget_hostname.value, self.widget_domainname.value, astra.get_ip())
        if int(self.astra_mode_code) != int(self.widget_astra_mode.value[0]):
            astra.astra_modeswitch(self.widget_astra_mode.value[0])
